"""
类名：UserService，继承于BaseService
实例属性：
    服务名称：service_name，赋值为'UserService'
实例方法：
    __init__(self)：需要先调用父类的__init__()，再添加实例属性
    def find_by_username(self, username):
        # 功能：根据用户名查询用户信息
        # :param username: 用户名
        # :return: 1. 如果用户存在，返回用户信息 2. 如果不存在，返回None
验证结果：
# 1. 实例化对象
# 2. 通过实例对象调用实例方法
"""

import json

from base_service import BaseService


class UserService(BaseService):
    """用户服务类：继承于BaseService"""

    def __init__(self):
        # 调用父类的同名方法
        super().__init__()
        # 服务名称：service_name
        self.service_name = 'UserService'

    def find_by_username(self, username):
        """
        功能：根据用户名查询用户信息
        :param username: 用户名
        :return: 1. 如果用户存在，返回用户信息 2. 如果不存在，返回None
        """
        response = self.dubbo_client.invoke(self.service_name, "findByUsername", username)

        #  如果response为'null'，说明没有会员，返回Python的None
        if response == 'null':
            return None
        else:
            # 否则，返回会员的字典格式信息
            # json.loads() json格式的字符串转换为Python的字典或列表
            return json.loads(response)


if __name__ == '__main__':
    # 1. 实例化对象
    user_service = UserService()
    # 2. 通过实例对象调用实例方法
    resp = user_service.find_by_username('admin')
    print('type(resp) =', type(resp))
    print('resp = ', resp)
